With the increased availability of different smart devices that access the internet, many new applications have been developed that leverage internet connectivity. The Internet of Things (IoT) is a phrase given for the interconnection of computing devices scattered around the globe within the existing internet infrastructure. IoT devices may be embedded in a variety of products, such as home appliances, manufacturing devices, printers, automobiles, thermostats, smart traffic lights, etc. Many IoT devices make use of a connection with a server of a remote service provider in order to send data from the server to the IoT device and from the IoT device to the server whenever data needs to be transmitted (e.g., publish-subscribe communication).
In some cases, a user may remotely control various functions of an IoT device. For example, a user may use an application on a smart phone that communicates with the remote service provider in order to cause an IoT device to activate a sprinkler system. The same user may also have another application that can be used in conjunction with the remote service provider in order to obtain temperature measurements from a thermostat IoT device.
Embedded development of IoT devices often requires reimplementation of existing protocols as products move from one hardware platform to another. This is often necessary due to different operating systems, processors, pin configuration, and other factors. Performing such a reimplementation may consume a large amount of developer time and steal resources away from other work projects. Moreover, systems may become exposed to new bugs and new security issues. Adding new protocols to devices in the field may introduce additional problems that result in additional costs. For example, re-flashing a device might “brick” the device.
While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that embodiments are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include,” “including,” and “includes” mean including, but not limited to.